package cn.itcast.service;

import cn.itcast.entity.PageResult;
import cn.itcast.entity.QueryPageBean;
import cn.itcast.pojo.Role;

import java.util.List;

public interface RoleService {

    /**
     * 分页查询角色
     *
     * @param queryPageBean 查询页面豆
     * @return {@link PageResult}
     */
    PageResult findRoleByPage(QueryPageBean queryPageBean);

    /**
     * 通过id删除角色
     *
     * @param id id
     */
    boolean deleteRoleById(Integer id);

    /**
     * 找到角色通过id
     *
     * @param id id
     * @return {@link Role}
     */
    Role findRoleById(Integer id);

    /**
     * 通过角色id找到菜单id
     *
     * @param id id
     * @return {@link Integer[]}
     */
    Integer[] findMenuIdByRoleId(Integer id);

    /**
     * 通过角色id找到权限id
     *
     * @param id id
     * @return {@link Integer[]}
     */
    Integer[] findPermissionIdByRoleId(Integer id);

    /**
     * 添加角色
     *
     * @param role          角色
     * @param permissionIds ids允许
     * @param menuIds       菜单id
     */
    void addRole(Role role, Integer[] permissionIds, Integer[] menuIds);

    /**
     * 修改角色
     *
     * @param role          角色
     * @param permissionIds ids允许
     * @param menuIds       菜单id
     */
    void updateRole(Role role, Integer[] permissionIds, Integer[] menuIds);

    /**
     * 找到所有的角色
     *
     * @return {@link List<Role>}
     */
    List<Role> findAllRole();
}
